1. Field of the Invention
Embodiments of the invention relate to selectively multiplexing incoming Web Real-Time Communication (WebRTC) traffic and/or de-multiplexing outgoing WebRTC traffic by a client-based WebRTC proxy on behalf of a WebRTC multimedia client application.
2. Description of the Related Art
Wireless communication systems have developed through various generations, including a first-generation analog wireless phone service (1G), a second-generation (2G) digital wireless phone service (including interim 2.5G and 2.75G networks) and third-generation (3G) and fourth (4G) high speed data/Internet-capable wireless services. There are presently many different types of wireless communication systems in use, including Cellular and Personal Communications Service (PCS) systems. Examples of known cellular systems include the cellular Analog Advanced Mobile Phone System (AMPS), and digital cellular systems based on Code Division Multiple Access (CDMA), Frequency Division Multiple Access (FDMA), Time Division Multiple Access (TDMA), the Global System for Mobile access (GSM) variation of TDMA, and newer hybrid digital communication systems using both TDMA and CDMA technologies.
More recently, Long Term Evolution (LTE) has been developed as a wireless communications protocol for wireless communication of high-speed data for mobile phones and other data terminals. LTE is based on GSM, and includes contributions from various GSM-related protocols such as Enhanced Data rates for GSM Evolution (EDGE), and Universal Mobile Telecommunications System (UMTS) protocols such as High-Speed Packet Access (HSPA).
The Worldwide Web Consortium (W3C) along with the Internet Engineering Task Force (IETF) started development in 2011 of a web developer technology called Web Real-Time Communication (WebRTC). WebRTC is a protocol that permits a browser (or endpoint) to engage in peer-to-peer (P2P) real-time communication with one or more other endpoints regardless of the relative location of the endpoints (e.g., whether the respective endpoints on the same device, in the same private network, both behind distinct Network Address Translation (NATs) and/or firewalls, etc.).
WebRTC leverages the Real-Time Transport Protocol (RTP) for the transmission of real-time media. RTP is a flexible protocol that can serve as a transport protocol for many different media types. These media types can be broadly classified as mapping to audio or video, or can be more specific by designating information such as an associated audio or video codec, bandwidth requirements, audio or video resolution, etc. Moreover, in a mesh conferencing model, multiple media streams may be sent P2P to enable client-based audio mixing or video compositing.
Because endpoints communicating via WebRTC can be separated by one or more NATs and/or firewalls that limit the number of end-to-end connections between the respective endpoints, WebRTC allows for multiplexing of RTP streams through a single IP address and port. Due in part to this limitation, existing WebRTC specifications recommend that multiplexing be employed for RTP and RTP control protocol (RTCP) communications. When streams of multiple types are multiplexed through one IP address and port, offering differentiated Quality of Service (QoS) to different types of media becomes more challenging.